#include <gtk/gtk.h>

/***************************************************
 * 변수
 ***************************************************/
GtkWidget *v_window;	// 메인 윈도우
GtkWidget *v_vbox1;

GtkWidget *v_result;	// 계산 결과 출력
GtkWidget *v_entry1;	// crc 계산을 위한 데이터
GtkWidget *v_hbox1;

GtkWidget *v_calc;	// 계산 버튼
GtkWidget *v_quit;	// 종료 버튼

/***************************************************
 * 입력
 * 출력
 * 사용
 * 설명
 ==================================================*/
static void destroy( GtkWidget *widget, gpointer   data )
{
    gtk_main_quit ();
}

/***************************************************
 * 입력
 * 출력
 * 사용
 * 설명
 *     CRC 계산 실행
 ==================================================*/
void on_calc_clicked(GtkWidget *widget, gpointer data)
{
	char *in_text;		// 입력받은 데이터
	int len;

	len = gtk_entry_get_text_length( GTK_ENTRY(v_entry1) );
	if(len % 2)
	{
		gtk_label_set_text( GTK_LABEL(v_result), "오류 : 데이터 갯수가 짝수가 되야 합니다.");
		return;
	}

	in_text = (char *)(gtk_entry_get_text( GTK_ENTRY(v_entry1) ) );
	gtk_label_set_text( GTK_LABEL(v_result), in_text);

	return;
}

/***************************************************
 * 입력
 * 출력
 * 사용
 * 설명
 ==================================================*/
int main( int   argc, char *argv[] )
{
	gtk_init (&argc, &argv);

	// 위젯 생성
	v_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
	v_vbox1 = gtk_vbox_new(FALSE, 0);

	v_result = gtk_label_new("결과");
	v_entry1 = gtk_entry_new();
	v_hbox1 = gtk_hbox_new(FALSE, 0);

	v_calc = gtk_button_new_with_label("계산");
	v_quit = gtk_button_new_with_label("종료");

	// 위젯 결합
	gtk_box_pack_start( GTK_BOX(v_hbox1), v_calc, TRUE, TRUE, 0);
	gtk_box_pack_start( GTK_BOX(v_hbox1), v_quit, TRUE, TRUE, 0);

	gtk_box_pack_start( GTK_BOX(v_vbox1), v_result, TRUE, TRUE, 0);
	gtk_box_pack_start( GTK_BOX(v_vbox1), v_entry1, FALSE, FALSE, 0);
	gtk_box_pack_start( GTK_BOX(v_vbox1), v_hbox1, TRUE, TRUE, 0);

	gtk_container_add( GTK_CONTAINER(v_window), v_vbox1);

	// 시그널 연결
	g_signal_connect (G_OBJECT (v_calc), "clicked", G_CALLBACK(on_calc_clicked), NULL);
	g_signal_connect (G_OBJECT (v_quit), "clicked", G_CALLBACK (destroy), NULL);

	g_signal_connect (G_OBJECT (v_window), "destroy", G_CALLBACK (destroy), NULL);

	/*  TODO: type some code */
	// 위젯 보이기
	gtk_widget_show_all(v_window);

	gtk_main ();
	
	return 0;
}

